package beans;

import dao.UsuarioDAO;
import dao.UsuarioDAOHibernate;
import java.awt.event.ActionEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import modelo.Usuario;

@Named(value = "usuarioBean")
@RequestScoped
public class usuarioBean {

    private List<Usuario> lista;
    private Usuario usuarioSelecionado;

    public usuarioBean() {
        this.lista = new ArrayList<Usuario>();
        this.usuarioSelecionado = new Usuario();
    }

    public List<Usuario> getLista() {
        UsuarioDAO usuarioDAO = new UsuarioDAOHibernate();
        this.lista = usuarioDAO.listar();
        return lista;
    }

    public Usuario getUsuarioSelecionado() {
        return usuarioSelecionado;
    }

    public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }

    public void btnCriarUsuario(ActionEvent actionEvent) {
        UsuarioDAO usuarioDAO = new UsuarioDAOHibernate();
        String msg;
        Date hoje = new Date();
        String data = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hoje);
        this.usuarioSelecionado.setDataCriacao(java.sql.Timestamp.valueOf(data));
        if (usuarioDAO.criar(this.usuarioSelecionado)) {
            msg = "O usuário " + this.usuarioSelecionado.getNomeUsuario() + " foi criado com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao criar o registro de usuário.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnAlterarUsuario(ActionEvent actionEvent) {
        UsuarioDAO usuarioDAO = new UsuarioDAOHibernate();
        String msg;
        Date hoje = new Date();
        String data = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hoje);
        this.usuarioSelecionado.setDataCriacao(java.sql.Timestamp.valueOf(data));
        if (usuarioDAO.alterar(this.usuarioSelecionado)) {
            msg = "O usuário " + this.usuarioSelecionado.getNomeUsuario() + " foi alterado com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao alterar o registro de usuário.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnExcluirUsuario(ActionEvent actionEvent) {
        UsuarioDAO usuarioDAO = new UsuarioDAOHibernate();
        String msg;
        if (usuarioDAO.excluir(this.usuarioSelecionado)) {
            msg = "O usuário " + this.usuarioSelecionado.getNomeUsuario() + " foi excluído com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao excluir o registro de usuário.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

}
